﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Execution
{
    /// <summary>
    /// The executable context factory is responsible to create an <see cref="IExecutableContext"/>
    /// and track the created executable context on the current <see cref="IExecutionContext"/>.
    /// </summary>
    public interface IExecutableContextFactory
    {
        /// <summary>
        /// Creates a new <see cref="IExecutableContext"/> and tracks it on the current <see cref="IExecutionContext"/>.
        /// </summary>
        /// <param name="describable">The describable.</param>
        /// <returns>A newly created executable context.</returns>
        IExecutableContext CreateExecutableContext(IDescribable describable);
    }
}
